Groovy তে Primitive এবং Object ডেটা টাইপস
Groovy তে Java এর মতোই প্রিমিটিভ এবং অবজেক্ট ডেটা টাইপ রয়েছে। Java তে প্রিমিটিভ ডেটা টাইপগুলি সরাসরি মেমোরিতে স্টোর হয় এবং এদের সাথে সম্পর্কিত কোনো অবজেক্ট থাকে না। তবে Groovy তে প্রিমিটিভ টাইপগুলি স্বয়ংক্রিয়ভাবে অবজেক্ট টাইপে কনভার্ট হয়, যা অটো-বক্সিং নামে পরিচিত।
Groovy তে ডেটা টাইপগুলি দুটি প্রধান ক্যাটাগরিতে ভাগ করা যায়:
- Primitive Data Types
- Object Data Types
1. Primitive Data Types
প্রিমিটিভ ডেটা টাইপগুলি সরাসরি মেমোরিতে স্টোর হয় এবং এগুলি সাধারণত ছোট আকারের এবং কম মেমোরি ব্যবহার করে। Groovy তে প্রিমিটিভ টাইপগুলো Java এর প্রিমিটিভ টাইপগুলির মতোই, যেমন:
| ডেটা টাইপ | ব্যাখ্যা | উদাহরণ |
|---|---|---|
byte | 8-বিট সাইনড ইন্টিজার | byte b = 1 |
short | 16-বিট সাইনড ইন্টিজার | short s = 10 |
int | 32-বিট সাইনড ইন্টিজার | int i = 100 |
long | 64-বিট সাইনড ইন্টিজার | long l = 1000L |
float | 32-বিট IEEE 754 ফ্লোটিং পয়েন্ট | float f = 1.23F |
double | 64-বিট IEEE 754 ফ্লোটিং পয়েন্ট | double d = 2.34 |
char | 16-বিট Unicode ক্যারেক্টার | char c = 'A' |
boolean | true অথবা false মান ধারণ করে | boolean b = true |
Groovy তে এই প্রিমিটিভ ডেটা টাইপগুলো ব্যবহার করা গেলেও, এগুলি সাধারণত Object ডেটা টাইপে রূপান্তরিত হয়।
2. Object Data Types
Groovy তে প্রতিটি প্রিমিটিভ টাইপের সাথে সংশ্লিষ্ট অবজেক্ট টাইপ রয়েছে। এই অবজেক্ট টাইপগুলি Java এর Wrapper classes এর সাথে সাদৃশ্যপূর্ণ। উদাহরণস্বরূপ, int এর অবজেক্ট টাইপ Integer এবং boolean এর অবজেক্ট টাইপ Boolean। এই অবজেক্ট টাইপগুলোর সাহায্যে প্রিমিটিভ টাইপের উপর বিভিন্ন মেথড ব্যবহার করা যায়।
| Primitive Type | Object Type (Wrapper Class) |
|---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
উদাহরণস্বরূপ:
int num = 10 // Primitive type
Integer numObj = num // Autoboxing to Object type
println numObj.class // Output: class java.lang.IntegerGroovy তে প্রিমিটিভ টাইপ অটোমেটিক্যালি অবজেক্ট টাইপে কনভার্ট হয় যখন প্রয়োজন হয় এবং এটিকে Autoboxing বলে। আবার অবজেক্ট টাইপকে প্রিমিটিভ টাইপেও পরিবর্তন করা যায় এবং এটি Unboxing নামে পরিচিত।
Autoboxing এবং Unboxing
Groovy তে Autoboxing এবং Unboxing স্বয়ংক্রিয়ভাবে ঘটে। যখন প্রিমিটিভ টাইপের একটি ভেরিয়েবলকে অবজেক্ট টাইপে কনভার্ট করতে হয়, তখন Groovy এটি স্বয়ংক্রিয়ভাবে করে থাকে। একইভাবে, অবজেক্ট টাইপকে প্রিমিটিভ টাইপে রূপান্তরিত করাও স্বয়ংক্রিয়ভাবে করা হয়।
int num = 100 // Primitive type
Integer objNum = num // Autoboxing
int newNum = objNum // Unboxing
println newNum // Output: 100পার্থক্য: Autoboxing এবং Unboxing এর মাধ্যমে Groovy তে প্রিমিটিভ এবং অবজেক্ট টাইপ একে অপরের সাথে মিশ্রিতভাবে ব্যবহার করা যায়, যা কোডিংকে আরও সহজ এবং কার্যকর করে তোলে।
String: একটি বিশেষ Object Data Type
Groovy তে String একটি বিশেষ ধরনের Object ডেটা টাইপ। এটি Immutable অর্থাৎ, এর মান পরিবর্তন করা যায় না। String এ স্ট্রিং ইন্টারপোলেশন ব্যবহার করা যায়, যা কোডিংকে আরও সুবিধাজনক করে তোলে।
String name = "Groovy"
println "Hello, $name!" // Output: Hello, Groovy!Groovy তে স্ট্রিং এর ম্যানিপুলেশন সহজ এবং এটি ডায়নামিক ভাবে স্ট্রিং এর মেথড ব্যবহার করতে পারে।
Dynamic Typing: Groovy তে def ব্যবহার
Groovy তে def ব্যবহার করে ভেরিয়েবল ডিক্লার করতে গেলে এটি ডাইনামিক টাইপ ধারণ করে, অর্থাৎ যে কোনো টাইপের মান সংরক্ষণ করতে পারে।
def age = 30 // Integer type
age = "Thirty" // String type
println age // Output: Thirtyউল্লেখযোগ্য দিক: Java তে ভেরিয়েবল টাইপ একবার নির্ধারিত হলে পরিবর্তন করা যায় না, কিন্তু Groovy তে def ব্যবহার করলে টাইপ পরিবর্তন করা সম্ভব।
সারসংক্ষেপ:
Groovy তে Primitive এবং Object টাইপগুলির মিশ্রণ Java থেকে সহজ এবং ব্যবহারবান্ধব। প্রিমিটিভ ডেটা টাইপের উপর ভিত্তি করে Object টাইপগুলি ম্যানেজ করা সহজ এবং Dynamic Typing এবং Autoboxing সুবিধাগুলি প্রোগ্রামিংকে আরও নমনীয় করে তোলে।
Read more